package com.demo.common.result;

import lombok.AllArgsConstructor;
import lombok.Data;

import java.io.Serializable;

@Data
@AllArgsConstructor
public class ResultVo<T> implements Serializable {
    //请求接口的返回码，成功或者异常等返回编码，例如定义请求成功
    private int code;

    //请求接口的描述，也就是对返回编码的描述。
    private String message;

    //请求接口成功，返回的业务数据。
    private T data;

    //返回枚举类型
    public ResultVo() {
        this.code = ResultCodeEnums.SUCCESS.getCode();
        this.message = ResultCodeEnums.SUCCESS.getMessage();
    }

    //返回枚举类型
    public ResultVo(ResultCodeEnums statusEnums) {
        this.code = statusEnums.getCode();
        this.message = statusEnums.getMessage();
    }

    //若没有数据返回，可以人为指定状态码和提示信息
    public ResultVo(int code, String msg) {
        this.code = code;
        this.message = msg;
    }

    //有数据返回时，状态码为200，默认提示信息为“操作成功！”
    public ResultVo(T data) {
        this.data = data;
        this.code = ResultCodeEnums.SUCCESS.getCode();
        this.message = ResultCodeEnums.SUCCESS.getMessage();
    }

    //有数据返回，状态码为 200，人为指定提示信息
    public ResultVo(T data, String msg) {
        this.data = data;
        this.code = ResultCodeEnums.SUCCESS.getCode();
        this.message = msg;
    }
}
